perm filename EROM.FAI[RST,LCS] blob
sn#195510 filedate 1976-01-04 generic text, type C, neo UTF8
COMMENT ⊗ VALID 00006 PAGES
C REC PAGE DESCRIPTION
C00001 00001
C00002 00002 .INSERT ASMBL.FAI
C00004 00003 ROM RESET
C00006 00004 SETAD: STYZ DADR AND DADR 2
C00008 00005 GET VAL
C00010 00006 LED OUT
C00021 ENDMK
C⊗;
.INSERT ASMBL.FAI
; RAM
SVPCH: 377 ;0
SVPCL: 377 ;1
SVPS: 377 ;2
SVA: 176 ;3
SVX: 176 ;4
SVY: 377 ;5
SVSP: 377 ;6
SVNMI: 377 ;7
SVPRA: 377 ;10
SVCRA: 377 ;11
SVPRB: 377 ;12
SVCRB: 377 ;13
DADR: 377 ;14
377 ;15
VAL: 377 ;16
NFLG: 377 ;17
ADR: 377 ;20
377 ;21
377 ;22 ← FF MARK
; ODT RAM & INTERUPT VECTORS
LOC 1000
IRQA: REPEAT 3,{111↔} ;1000 - 1002
IRQB: REPEAT 2,{111↔} ;1003 - 1004
NMIA: REPEAT 3,{333↔} ;1005 - 1007
377 ;1010 ← FF MARK
; SUBS
; BRKIN← 177400 ←377 0
; ODT ← 177415 ←377 15
; LDPY ← 177704 ←377 304
; IKBW ← 177754 ←377 354
; ROM RESET
; OCT DDT CK FOR BBIT?
; CK OTHER PROM AND BRK ?
; SETUP IRQV WITH ? OR BRK FOR OTHER ROM
SVNUM←17 ↔ BBIT←20
LOC 177400 ;SHOULD BE 177400
BRKCK: STAZ SVA ;SAVE A 2
PLA ;GET OLD PS 1
PHA ; 1
ANDI BBIT ; 2
BNE BRKIN ;AND CK FOR BRK 2
LDAZ SVA ; 2
JMPIN IRQB ;ELSE RETURN TO IRQV __3_
; 13
ODT: STAZ SVA ;SAVE A 2
BRKIN: LDA NMIA ; 3
STA SVNMI ;SAVE NMIA 3
LDAI RTI ; 2
STA NMIA ;FIX IT 3
STXZ SVX ;SAVE X __2_
; 15
; RESET I/O SAVE PR ?
CRA←173775 ↔ PRA←173774
CRB←173777 ↔ PRB←173776
LDXI 3 ; 2
SVPIA: LDAX PRA ;SAVE CR THEN DD 3
STAZX SVPRA ; 2
LDAI 0 ; 2
STAX PRA ;REPLACE WITH ZEROS 3
DEX ; 1
BPL SVPIA ; 2
STX PRB ;FOR OUTPUT __3_
; 18
; DPY .LOC
STYZ SVY ;SAVE Y 2
PLA ; 1
STAZ SVPS ;SAVE PS AND PC 2
PLA ; 1
STAZ SVPCL ; 2
TAY ;LOAD Y WITH PCL 1
PLA ; 1
STAZ SVPCH ; 2
TSX ; 1
STXZ SVSP ;SAVE SP 2
TAX ;LOAD X WITH PCH __1_
; 16
; ____
; 62
SETAD: STYZ DADR ;AND DADR 2
STXZ DADR+1 ; 2
GVAL: STYZ ADR ;SETUP ADR 2
STXZ ADR+1 ; 2
LDXI 0 ; 2
LDAIX DADR ;GET VAL FROM @DADR 2
STAZ VAL ; __2_
; 14
; KB SCAN
KSCAN: JSR LDPY ;DPY DADR AND VAL 3
JSR IKBW ;GET KBCHR 3
ANDI 17 ;GET RID OF JUNK 2
CMPI 10 ; 2
BEQ DOT ;EXAM 2
LDXZ NFLG ; 2
BCC GNUM ;BRANCH ON NUM 2
BPL XNXT ;IF NO DEP THEN EX NXT__2_
; 18
; DEP
LDAZ DADR ;DEP DREG LOW 2
INX ;X ← 0 1
STAIX ADR ;IN @ADR 2
; EXAM NEXT
XNXT: LDXI 2 ; 2
STXZ NFLG ; 2
LDYZ ADR ; 2
LDXZ ADR+1 ; 2
INY ;ADR ← ADR+1 1
BNE SETAD ; 2
INX ; 1
JMP SETAD ; __3_
; 20
; EXAM
ER1←177000
DOT: LDXZ NFLG ;CK FOR NO NUM 2
BPL CKOR ; 2
INX ; 1
STXZ NFLG ; 2
LDYZ DADR ;GET DADR FOR ADR 2
LDXZ DADR+1 ; 2
JMP GVAL ; __3_
; 14
CKOR: BNE CONT ;CK FOR CONTINUE 2
LDX ER1 ; 3
INX ; 1
BEQ KSCAN ;CK FOR OTHER PROM 2
JMP ER1 ; __3_
; 11
; ____
; 77
; GET VAL
GNUM: BMI NOZRO ;IF FIRST NUM 2
LDXI 0 ; 2
STXZ DADR ;THEN ZERO ADR DPY 2
STXZ DADR+1 ; 2
NOZRO: LDXI 2 ; 2
DIG: ASLZ DADR ;SHIFT ADDRESS LEFT 2
ROLZ DADR+1 ; 2
DEX ; 1
BPL DIG ;SHIFT MORE 2
ORAZ DADR ;AND ADD KBCHR 2
STAZ DADR ; 2
STXZ NFLG ;SET NUM FLG 2
JMP KSCAN ; __3_
; 26
; CONTINUE
CONT: LDAZX SVCRA ;RESTORE CRB AND CRA 2
STAX CRA ; 3
DEX ; 1
DEX ; 1
BPL CONT ; __2_
; 9
LDXZ SVSP ;GET SP 2
TXS ; 1
LDYZ SVY ;GET Y 2
LDXI -4 ; 2
GETS: LDAZX SVPCH+4 ;RESTORE PC AND PS 2
PHA ;TO STACK 1
INX ; 1
BMI GETS ; __2_
; 13
PLA ;GET A 1
LDXZ SVNMI ; 2
STX NMIA ;RESTORE NMIV 3
LDXZ SVX ;GET X 2
RTI ; __1_
; 9
; ____
; 57
; LED OUT
LDPY: LDAI 54 ;SET DDBIT 2
STA CRB ;AND PULSE IN CRB 3
LDXI 5 ; 2
LDYI 5 ; _2_
; 9
ROT: ROLZ VAL ;ROTATE VAL AND 2
ROLZ DADR ;DADR LEFT 4 2
ROLZ DADR+1 ;BITS AT A TIME 2
DEY ; 1
BNE ROT ; _2_
; 9
LDAZ VAL ; 2
ANDI 17 ; 2
ORAX DTBL ; 3
STA PRB ;DPY IT 3
LDYI 4 ; 2
DEX ; 1
BPL ROT ;DO REST 2
RTS ; __1_
; 16
DTBL: 0 ; 1
20 ; 1
40 ; 1
60 ; 1
100 ; 1
120 ; __1_
; 6
; INKBW
IKBW: LDAI 6 ;SET DDBIT 2
STA CRA ;AND ↑BIT IN CRA 3
CKMOR: BIT CRA ;TEST CRA FOR INPUT 3
BPL CKMOR ;TRY AGAIN 2
LDA PRA ;GET CHR 3
RTS ;RETURN __1_
; 14
; ROM INTER VECTS
LOC 177772
NMIV: ABSO NMIA ; 2
RSTV: ABSO ODT ; 2
IRQV: ABSO IRQA ; _2_
; 6
; ____
; 60
; 62
; 77
; 57
; __60_
END ; 256